Generics

Descripcion

Los generics nos permiten realizar tipados mas fuertes a la hora de trabajar con ciertos tipos de datos.

Metodo

Un ejemplo en el que se usan Generics es con el tipo List al usar este tipo tenemos que indicar entre parentesis angulares el tipo de dato que almacenará:

List<String> lista = new();

En este caso indicamos que la lista contendrá elementos String.

El siguiente código producirá un error en la compilación en el tercer Add ya que se está rompiendo la restrición de tipado y se está intentando añadir un int en vez de un string:

List<String> lista = new();

lista.Add("Manzana");
lista.Add("Sandia");
lista.Add(56);

lista.ForEach(a => Console.WriteLine(a));
Metodo para manejar varios tipos de datos con Generics

El siguiente ejemplo muestra como se usan generics para hacer que un metodo pueda trabajar con varios tipos de datos:

Programa principal:

using AlmacenApp;

Almacen datos = new Almacen();

datos.IniciarAlmacenamiento();

String cadena = datos.getValor<String>(0);
int numero = datos.getValor<int>(1);

Console.Write($"{numero} {cadena}");

Clase almacen:

using System.Collections;

namespace AlmacenApp
{
    public class Almacen
    {
        ArrayList datos;

        public Almacen()
        {
            datos = new();
        }
        public void IniciarAlmacenamiento()
        {
            datos.Add("Ejemplo");
            datos.Add(5);
        }

        public T getValor<T>(int i)
        {
            return (T)datos[i];
        }
    }
}

En este ejemplo se usa un ArrayList en la clase Almacen para almacenar varios tipos de datos, despues hacemos uso de los generics en el metodo getValor para que nos devuelva un tipo de valor u otro segun el valor que solicitamos, en este caso el valor 0 es un string y el valor 1 es un int

Tags

C# | Generics